﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using SST_BL;

namespace TCU
{
    public partial class ManejoExcepciones : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack){                
                string user = Request.ServerVariables["REMOTE_USER"].ToString();
                if (MainBL.RevisarPermiso(user.Substring(user.IndexOf("\\") + 1), "Administrador"))
                    this.CargarExcepciones();
                else
                    Server.Transfer("NoAccess.aspx");
            }
            
        }

        private void CargarExcepciones() {
            DataTable dt = MainBL.ListarExcepciones();
            if (dt == null || dt.Rows.Count < 1) {
                dt = new DataTable();
                dt.Columns.Add("ExcepcionID", typeof(int));
                dt.Columns.Add("Comienzo", typeof(string));
                dt.Columns.Add("HoraTiempo", typeof(string));
                dt.Columns.Add("Informatico", typeof(string));
                dt.Rows.Add(0, "No hay ninguna excepcion activa...");
                gvExcepciones.AutoGenerateDeleteButton = false;
                gvExcepciones.AutoGenerateEditButton = false;
            }
            

            gvExcepciones.DataSource = dt;
            gvExcepciones.DataBind();
        }

        protected void gvExcepciones_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Agregar"))
            {
                TextBox txtComienzo = gvExcepciones.FooterRow.FindControl("txtComiezoExcepcion") as TextBox;
                TextBox txtFin = gvExcepciones.FooterRow.FindControl("txtFinExcepcion") as TextBox;
                DropDownList dropInformatico = gvExcepciones.FooterRow.FindControl("dropInformaticoExcepcion") as DropDownList;
                DateTime comienzo = DateTime.Parse(txtComienzo.Text);
                DateTime fin = DateTime.Parse(txtFin.Text);
                int informatico = int.Parse(dropInformatico.SelectedValue);

                if (comienzo != null && fin != null && informatico != null)
                {
                    if (DateTime.Now < comienzo && DateTime.Now < fin)
                    {
                        if (MainBL.AgregarExcepcion(informatico, comienzo, fin))
                        {
                            excepcionNotification.Text = "La excepcion fue agregada!";
                            excepcionNotification.ForeColor = System.Drawing.Color.Green;
                            CargarExcepciones();
                        }
                        else {
                            excepcionNotification.Text = "La excepcion no pudo ser agregada! ";
                        }
                    }
                    else
                    {
                        excepcionNotification.Text = "Las fechas no deben de estar en pasado! ";
                    }
                }
                else {
                    excepcionNotification.Text = "Favor llenar todos los campos!";
                }                
            }
        }

        protected void gvExcepciones_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Label id = gvExcepciones.Rows[e.RowIndex].FindControl("lblIDExcepcion") as Label;
            if (MainBL.BorrarExcepcion(int.Parse(id.Text)))
            {
                excepcionNotification.Text = "La excepcion fue eliminada! ";
                excepcionNotification.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                excepcionNotification.Text = "La excepcion no pudo ser eliminada!";
                excepcionNotification.ForeColor = System.Drawing.Color.Red;
            }
            this.CargarExcepciones();

        }


    }
}